home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_12_03
/
allison
/
tstr.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1994-01-05
|
2KB
|
93 lines
LISTING 13 - Use macros and an inline function to test the
standard C++ string class
// tstr.cpp: Test the C++ string class
#include <iostream.h>
#include <stddef.h>
#include <cstring.h>
// Handy display macros
#define result(exp) \
cout << #exp ": \"" << (exp) << '\"' << endl
#define test(obj,exp) \
exp, print(#obj ", after " #exp ":\n",obj)
// Print a string in quotes
inline void print(const char *p, const string& s)
{
cout << p << '"' << s << '"' << endl;
}
main()
{
string s1("Now is the time for all worthy carbon units"),
s2 = "to come to the aid of their sector.",
s3 = '\n',
s4(s1);
size_t len = s1.length();
// Test some operators
result(s1 == s4);
result(s1 < s4);
result(s1 + s3 + s2);
test(s1,s1 += s3 + s2);
result(s1 == s4);
test(s1,s1.resize(len));
result(s1 == s4);
cout << endl;
// Search and replace
size_t pos = s1.find("all");
if (pos != NPOS)
test(s1,s1.replace(pos,3,"some"));
pos = s1.find("worthy");
if (pos != NPOS)
{
result(s1.substr(pos,5));
test(s1,s1.insert(pos,"un"));
}
cout << endl;
// More searching
result(s1.find_first_of("aeiou"));
result(s1.find_first_not_of("aeiou"));
result(s1.find_last_of("aeiou"));
result(s1.find_last_not_of("aeiou"));
cout << endl;
// Subscripting
pos = s2.find_first_of('d');
test(s2,s2[pos] = 'l');
return 0 ;
}
/* Output:
s1 == s4: "1"
s1 < s4: "0"
s1 + s3 + s2: "Now is the time for all worthy carbon units
to come to the aid of their sector."
s1, after s1 += s3 + s2:
"Now is the time for all worthy carbon units
to come to the aid of their sector."
s1 == s4: "0"
s1, after s1.resize(len):
"Now is the time for all worthy carbon units"
s1 == s4: "1"
s1, after s1.replace(pos,3,"some"):
"Now is the time for some worthy carbon units"
s1.substr(pos,5): "worth"
s1, after s1.insert(pos,"un"):
"Now is the time for some unworthy carbon units"
s1.find_first_of("aeiou"): "1"
s1.find_first_not_of("aeiou"): "0"
s1.find_last_of("aeiou"): "43"
s1.find_last_not_of("aeiou"): "45"
s2, after s2[pos] = 'l':
"to come to the ail of their sector."
*/